/**
 *  CloudEdit- Editor colaborativo peer-to-peer
 *  Author: Miguel Souto Bartolomé
 *  Web: http://code.google.com/p/cloudedit/
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.google.gwt.cloudedit.server;

import easypastry.cast.CastContent;

/**
 * La Clase DatosMensaje representa un mensaje que se puede enviar entre miembros
 * de una red DHT a través de la notificación de eventos CAST.
 * 
 * @author Miguel Souto Bartolomé
 * @version 4.0 
 */
public class DatosMensaje extends CastContent {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6047699148212724882L;

	/** El contenido del mensaje codificado en XML. */
	private String xml;
	
	/** Identificador de la sesión emisora del mensaje. */
	private String idSesion;
	
	/** Identificador del archivo que el emisor está editando. */
	private String idArchivo;

	/**
	 * Instancia un nuevo datos mensaje.
	 *
	 * @param subject identificador del grupo al que va dirigido el mensaje
	 * @param idArchivo identificador del archivo que el emisor está editando
	 * @param xml el mensaje codificado en XML
	 * @param sesion identificador de la sesión emisora del mensaje
	 */
	public DatosMensaje(String subject, String idArchivo, String xml, String sesion) {
		super(subject);
		this.idArchivo = idArchivo;
		this.xml = xml;
		this.idSesion = sesion;	}

	/**
	 * Devuelve el mensaje codificado en XML.
	 *
	 * @return el mensaje
	 */
	public String getXML() {
		return this.xml;
	}
	
	/**
	 * Devuelve el archivo.
	 *
	 * @return el archivo
	 */
	public String getArchivo() {
		return this.idArchivo;
	}

	/**
	 * Asigna el mensaje codificado en XML.
	 *
	 * @param xml el nuevo mensaje
	 */
	public void setXML(String xml) {
		this.xml = xml;
	}
	
	/**
	 * Devuelve el identificador de la sesión emisora del mensaje.
	 *
	 * @return el identificador de la sesión
	 */
	public String getSesion() {
		return this.idSesion;
	}
		
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return this.xml;
	}

}